package tec;
/**
 * Cette classe représente l'état d'un passager dans un transport en commun.
 * Il y a un état à l'exterieur du transport (dehors) et deux états à 
 * l'intérieur (assis, debout).
 *  
 * Les instances de cette classe sont des objets constants.
 *
 * @author Georgy
 * @since 2007-2008
 **/
class EtatPassager 
{
	static public EtatPassager etatAssis = new EtatPassager(Etat.ASSIS);
	static public EtatPassager etatDehors = new EtatPassager(Etat.DEHORS);
	static public EtatPassager etatDebout = new EtatPassager(Etat.DEBOUT);
	private Etat etat;
	/**
	 * Construit une instance en précisant l'état du passager.
	 * 
	 * @param e  valeur de l'état.
	 */
	private EtatPassager(Etat e) 
	{
		etat = e;
	}


	/* Le constructeur d'une classe permet d'initialiser l'etat de l'instance creee.
	 * Son nom correspond toujours au nom de la classe. Il n'y a pas de type de retour.
	 */



	/**
	 * Le passager est-il à l'extérieur du transport ?
	 *
	 * @return vrai si instanciation avec DEHORS;
	 */
	public boolean estExterieur() {
		return etat == Etat.DEHORS;
	}

	/**
	 * Le passager est-il assis à l'intérieur du transport ?
	 *
	 * @return vrai si instanciation avec ASSIS;
	 */
	public boolean estAssis() 
	{
		return etat == Etat.ASSIS;
	}

	/**
	 * Le passager est-il debout à l'intérieur du transport ?
	 *
	 * @return vrai si instanciation avec DEBOUT;
	 */
	public boolean estDebout() 
	{
		return etat == Etat.DEBOUT;

	}

	/**
	 * Le passager est-il a l'intérieur du transport ?
	 *
	 * @return vrai si instanciation avec ASSIS ou DEBOUT.
	 */
	public boolean estInterieur() 
	{
		return etat != Etat.DEHORS;
	}



	/**
	 * Cette méthode est heritée de la classe {@link java.lang.Object}.
	 * Très utile pour le débogage, elle permet de fournir une 
	 * chaîne de caractères correspondant à l'état d'un objet.
	 * <p> Un code par défaut est définit dans 
	 * {@link java.lang.Object#toString() la classe Object} 
	 * Il faut adapter (redéfinir) le code de cette méthode à chaque classe.
	 *
	 * Pour les chaînes de cararctères, l'opérateur + correspond a la concaténation. 
	 */
	@Override
		public String toString() {
			return "<" + etat + ">";
		}
}
